/**
 * 找到能使用背包的target
 * @param {number[]} nums
 * @return {boolean}
 */
var canPartition = function(nums) {
    let sum = 0;
    for(let i= 0;i<nums.length;i++){
        sum+=nums[i]
    }
    if(sum%2===1) return false

    let target = sum/2,
    dp = new Array(target+1).fill(0)

    for(let i = 0;i<nums.length;i++){
        for(let j = target;j>=0;j--){
            if(nums[i]<=j){
                dp[j] = Math.max(dp[j],nums[i]+dp[j-nums[i]])
            }
        }
    }
    return dp[target]===target
};